//服务器入口文件
const Koa=require('koa')
const fs=require('fs')
const moment=require('moment')//美化时间

//起服务
const app=new Koa()


//中间件1
app.use(async (ctx,next)=>{
    console.log('中间件1执行了')
    //请求方式,请求路径
    let {method,url}=ctx
    //获取请求开始执行的时间
    let start=new Date().getTime() //时间转数字
    //时间戳
    let startTime=moment(new Date()).format("YYYY-MM-DD HH:mm:ss")
    //next是连接中间价的桥梁
    await next()
    //获取该请求结束的时间
    let end=new Date().getTime()
    //追加式写入文件   路径
    fs.appendFileSync('./logger.txt',`时间：${startTime}---请求地址：${url}---请求方式：${method}---请求时间：${end-start}ms\n`)
    console.log('中间件1结束啦')
})
//中间件2
app.use(async (ctx,next)=>{
     console.log('中间件2执行了')
     await next()
     console.log('中间件2结束啦')
})
 //中间件3
app.use(async (ctx,next)=>{
     console.log('中间件3执行了')
     //模拟一段程序运行
     await delay(2000)
     await next()
     console.log('中间件3结束啦')
})

//定义延迟函数
function delay(time){

   return new Promise((resolve, reject) => {
       setTimeout(() => {
           resolve()
       }, time);
   })
   
}

//监听
app.listen(3000,()=>{
    console.log('koa is running')
})